
<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <!--
This HTML was auto-generated from MATLAB code.
To make changes, update the MATLAB code and republish this document.
      --><title>Reports_1</title><meta name="generator" content="MATLAB 9.4"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2023-12-19"><meta name="DC.source" content="Reports_1.m"><style type="text/css">
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outine:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}

html { min-height:100%; margin-bottom:1px; }
html body { height:100%; margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:10px; color:#000; line-height:140%; background:#fff none; overflow-y:scroll; }
html body td { vertical-align:top; text-align:left; }

h1 { padding:0px; margin:0px 0px 25px; font-family:Arial, Helvetica, sans-serif; font-size:1.5em; color:#d55000; line-height:100%; font-weight:normal; }
h2 { padding:0px; margin:0px 0px 8px; font-family:Arial, Helvetica, sans-serif; font-size:1.2em; color:#000; font-weight:bold; line-height:140%; border-bottom:1px solid #d6d4d4; display:block; }
h3 { padding:0px; margin:0px 0px 5px; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; color:#000; font-weight:bold; line-height:140%; }

a { color:#005fce; text-decoration:none; }
a:hover { color:#005fce; text-decoration:underline; }
a:visited { color:#004aa0; text-decoration:none; }

p { padding:0px; margin:0px 0px 20px; }
img { padding:0px; margin:0px 0px 20px; border:none; }
p img, pre img, tt img, li img, h1 img, h2 img { margin-bottom:0px; } 

ul { padding:0px; margin:0px 0px 20px 23px; list-style:square; }
ul li { padding:0px; margin:0px 0px 7px 0px; }
ul li ul { padding:5px 0px 0px; margin:0px 0px 7px 23px; }
ul li ol li { list-style:decimal; }
ol { padding:0px; margin:0px 0px 20px 0px; list-style:decimal; }
ol li { padding:0px; margin:0px 0px 7px 23px; list-style-type:decimal; }
ol li ol { padding:5px 0px 0px; margin:0px 0px 7px 0px; }
ol li ol li { list-style-type:lower-alpha; }
ol li ul { padding-top:7px; }
ol li ul li { list-style:square; }

.content { font-size:1.2em; line-height:140%; padding: 20px; }

pre, code { font-size:12px; }
tt { font-size: 1.2em; }
pre { margin:0px 0px 20px; }
pre.codeinput { padding:10px; border:1px solid #d3d3d3; background:#f7f7f7; }
pre.codeoutput { padding:10px 11px; margin:0px 0px 20px; color:#4c4c4c; }
pre.error { color:red; }

@media print { pre.codeinput, pre.codeoutput { word-wrap:break-word; width:100%; } }

span.keyword { color:#0000FF }
span.comment { color:#228B22 }
span.string { color:#A020F0 }
span.untermstring { color:#B20000 }
span.syscmd { color:#B28C00 }

.footer { width:auto; padding:10px 0px; margin:25px 0px 0px; border-top:1px dotted #878787; font-size:0.8em; line-height:140%; font-style:italic; color:#878787; text-align:left; float:none; }
.footer p { margin:0px; }
.footer a { color:#878787; }
.footer a:hover { color:#878787; text-decoration:underline; }
.footer a:visited { color:#878787; }

table th { padding:7px 5px; text-align:left; vertical-align:middle; border: 1px solid #d6d4d4; font-weight:bold; }
table td { padding:7px 5px; text-align:left; vertical-align:top; border:1px solid #d6d4d4; }





  </style></head><body><div class="content"><h2>Contents</h2><div><ul><li><a href="#2">&#1054;&#1090;&#1095;&#1105;&#1090; &#1087;&#1086; &#1074;&#1080;&#1076;&#1077;&#1086;&#1088;&#1103;&#1076;&#1091;:</a></li><li><a href="#4">&#1042;&#1099;&#1074;&#1086;&#1076; RGB</a></li><li><a href="#5">&#1048;&#1089;&#1093;&#1086;&#1076;&#1085;&#1099;&#1077; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077;</a></li><li><a href="#6">&#1050;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1103; &#1103;&#1088;&#1082;&#1086;&#1089;&#1090;&#1080;</a></li><li><a href="#7">&#1050;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1103; &#1103;&#1088;&#1082;&#1086;&#1089;&#1090;&#1080; + &#1084;&#1077;&#1076;&#1080;&#1072;&#1085;&#1085;&#1072;&#1103; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;</a></li></ul></div><pre class="codeinput">clear; close <span class="string">all</span>; clc;

dt=1/30;     <span class="comment">% &#1080;&#1085;&#1090;&#1077;&#1088;&#1074;&#1072;&#1083; &#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;&#1081; &#1076;&#1080;&#1089;&#1082;&#1088;&#1077;&#1090;&#1080;&#1079;&#1072;&#1094;&#1080;&#1080;</span>
fmin=0.15; <span class="comment">% &#1085;&#1080;&#1078;&#1085;&#1103;&#1103; &#1075;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; - &#1095;&#1072;&#1089;&#1090;&#1086;&#1090;&#1085;&#1099;&#1081; &#1076;&#1080;&#1072;&#1087;&#1072;&#1079;&#1086;&#1085; &#1076;&#1099;&#1093;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1081; &#1074;&#1086;&#1083;&#1085;&#1099;</span>
dt=1/30;     <span class="comment">% &#1080;&#1085;&#1090;&#1077;&#1088;&#1074;&#1072;&#1083; &#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;&#1081; &#1076;&#1080;&#1089;&#1082;&#1088;&#1077;&#1090;&#1080;&#1079;&#1072;&#1094;&#1080;&#1080;</span>
Nmed=1/(dt*fmin); <span class="comment">% &#1072;&#1087;&#1077;&#1088;&#1090;&#1091;&#1088;&#1072; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;</span>

<span class="comment">% Names</span>
names = [ <span class="string">"P1H1"</span> <span class="string">"P1LC1"</span> <span class="string">"P1LC2"</span> <span class="string">"P1LC3"</span> <span class="string">"P1LC4"</span> <span class="string">"P1LC5"</span> <span class="string">"P1LC6"</span> <span class="string">"P1LC7"</span> <span class="string">"P1M1"</span> <span class="string">"P1M2"</span> <span class="string">"P1M3"</span> <span class="string">"P2LC1"</span> <span class="string">"P2LC2"</span> <span class="string">"P2LC3"</span> <span class="string">"P2LC4"</span> <span class="string">"P2LC5"</span> <span class="string">"P3LC1"</span> <span class="string">"P3LC2"</span> <span class="string">"P3LC3"</span> <span class="string">"P3LC4"</span> <span class="string">"P3LC5"</span> ];
names = [ <span class="string">"P1H1"</span> <span class="string">"P1LC1"</span> ];
<span class="comment">%  names = ["P1LC1"];</span>
zrp=<span class="string">"endh/"</span>; <span class="comment">% Zero Folder</span>
</pre><h2 id="2">&#1054;&#1090;&#1095;&#1105;&#1090; &#1087;&#1086; &#1074;&#1080;&#1076;&#1077;&#1086;&#1088;&#1103;&#1076;&#1091;:</h2><pre class="codeinput"><span class="keyword">for</span> iName = 1:length(names)
</pre><pre class="codeinput">    Name = names(iName);
    Path=zrp+Name+<span class="string">'/'</span>;

    <span class="keyword">try</span>
        RGB=load(Path+Name+<span class="string">"_RGB.txt"</span>);
        RGB_nc=load(Path+Name+<span class="string">"_nc_RGB.txt"</span>);
        nc=0:dt:length(RGB)*dt-dt;
    <span class="keyword">catch</span>
        disp(<span class="string">"ERROR: &#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1087;&#1088;&#1080; &#1092;&#1086;&#1088;&#1084;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1086;&#1090;&#1095;&#1105;&#1090;&#1072; &#1087;&#1086; "</span>+Name);
        <span class="keyword">continue</span>
    <span class="keyword">end</span>
</pre><h2 id="4">&#1042;&#1099;&#1074;&#1086;&#1076; RGB</h2><pre class="codeinput">        disp(Name);

        figure(<span class="string">'Position'</span>, [0 0 400 100]); title(Name,<span class="string">'FontSize'</span>,36);

        figure(<span class="string">'Name'</span>,<span class="string">'RGB'</span>,<span class="string">'Position'</span>, [0 0 1800 900]); set(gcf,<span class="string">'name'</span>,<span class="string">"&#1057;&#1088;&#1072;&#1074;&#1085;&#1077;&#1085;&#1080;&#1077; &#1084;&#1077;&#1076;&#1080;&#1072;&#1085;&#1085;&#1086;&#1081; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1080; &#1076;&#1083;&#1103; "</span>+Name); clf;
        subplot(2,2,1); plot(nc, RGB(:,1),<span class="string">"red"</span>, nc, RGB(:,2),<span class="string">"green"</span>, nc, RGB(:,3),<span class="string">"blue"</span>);
        title(<span class="string">"&#1042;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;&#1081; &#1088;&#1103;&#1076; RGB &#1076;&#1086; &#1082;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1080; &#1094;&#1074;&#1077;&#1090;&#1072;"</span>); grid <span class="string">on</span>;
        xlabel(<span class="string">"&#1057;&#1077;&#1082;&#1091;&#1085;&#1076;&#1099;"</span>); ylabel(<span class="string">"&#1048;&#1085;&#1090;&#1077;&#1085;&#1089;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1100; &#1094;&#1074;&#1077;&#1090;&#1086;&#1074;&#1099;&#1093; &#1082;&#1072;&#1085;&#1072;&#1083;&#1086;&#1074;"</span>); <span class="comment">% ylim([40;105]);</span>

        subplot(2,2,2); plot(nc, RGB_nc(:,1),<span class="string">"red"</span>, nc, RGB_nc(:,2),<span class="string">"green"</span>, nc, RGB_nc(:,3),<span class="string">"blue"</span>);
        title(<span class="string">"&#1042;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;&#1081; &#1088;&#1103;&#1076; RGB &#1087;&#1086;&#1089;&#1083;&#1077; &#1082;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1080; &#1094;&#1074;&#1077;&#1090;&#1072;"</span>); grid <span class="string">on</span>;
        xlabel(<span class="string">"&#1057;&#1077;&#1082;&#1091;&#1085;&#1076;&#1099;"</span>); ylabel(<span class="string">"&#1048;&#1085;&#1090;&#1077;&#1085;&#1089;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1100; &#1094;&#1074;&#1077;&#1090;&#1086;&#1074;&#1099;&#1093; &#1082;&#1072;&#1085;&#1072;&#1083;&#1086;&#1074;"</span>); <span class="comment">% ylim([40;105]);</span>

        subplot(2,2,[3,4]);
        RGB_med=RGB_nc;
        RGB_med(:,1)=RGB_med(:,1)-medfilt1(RGB_med(:,1),Nmed);
        RGB_med(:,2)=RGB_med(:,2)-medfilt1(RGB_med(:,2),Nmed);
        RGB_med(:,3)=RGB_med(:,3)-medfilt1(RGB_med(:,3),Nmed);
        plot(nc, RGB_med(:,1),<span class="string">"red"</span>, nc, RGB_med(:,2),<span class="string">"green"</span>, nc, RGB_med(:,3),<span class="string">"blue"</span>);
        title(<span class="string">"&#1042;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;&#1081; &#1088;&#1103;&#1076; RGB &#1087;&#1086;&#1089;&#1083;&#1077; &#1082;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1080; &#1094;&#1074;&#1077;&#1090;&#1072; &#1080; &#1084;&#1077;&#1076;&#1080;&#1072;&#1085;&#1085;&#1086;&#1075;&#1086; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072; &#1089; &#1086;&#1082;&#1085;&#1086;&#1084; N_m_e_d="</span>+Nmed);
        xlabel(<span class="string">"&#1057;&#1077;&#1082;&#1091;&#1085;&#1076;&#1099;"</span>); ylabel(<span class="string">"&#1048;&#1085;&#1090;&#1077;&#1085;&#1089;&#1080;&#1074;&#1085;&#1086;&#1089;&#1090;&#1100; &#1094;&#1074;&#1077;&#1090;&#1086;&#1074;&#1099;&#1093; &#1082;&#1072;&#1085;&#1072;&#1083;&#1086;&#1074;"</span>); grid <span class="string">on</span>; ylim([-4;4]);
</pre><pre class="codeoutput">P1H1
</pre><img vspace="5" hspace="5" src="Reports_1_01.png" alt=""> <img vspace="5" hspace="5" src="Reports_1_02.png" alt=""> <pre class="codeoutput">P1LC1
</pre><img vspace="5" hspace="5" src="Reports_1_06.png" alt=""> <img vspace="5" hspace="5" src="Reports_1_07.png" alt=""> <h2 id="5">&#1048;&#1089;&#1093;&#1086;&#1076;&#1085;&#1099;&#1077; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077;</h2><pre class="codeinput">        <span class="keyword">try</span>
            chss2(rgb2pw(RGB, <span class="string">"Cr"</span>), Path, Name);
        <span class="keyword">catch</span>
            disp(<span class="string">"ERROR: &#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1087;&#1088;&#1080; &#1092;&#1086;&#1088;&#1084;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1086;&#1090;&#1095;&#1105;&#1090;&#1072; &#1080;&#1079; &#1080;&#1089;&#1093;&#1086;&#1076;&#1085;&#1099;&#1093; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;"</span>);
        <span class="keyword">end</span>
        CloseFigure
</pre><img vspace="5" hspace="5" src="Reports_1_03.png" alt=""> <img vspace="5" hspace="5" src="Reports_1_08.png" alt=""> <h2 id="6">&#1050;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1103; &#1103;&#1088;&#1082;&#1086;&#1089;&#1090;&#1080;</h2><pre class="codeinput">        <span class="keyword">try</span>
            chss2(rgb2pw(RGB_nc, <span class="string">"Cr"</span>), Path, Name);
        <span class="keyword">catch</span>
            disp(<span class="string">"ERROR: &#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1087;&#1088;&#1080; &#1092;&#1086;&#1088;&#1084;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1086;&#1090;&#1095;&#1105;&#1090;&#1072; &#1080;&#1079; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; &#1089; &#1082;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1077;&#1081; &#1094;&#1074;&#1077;&#1090;&#1072;"</span>);
        <span class="keyword">end</span>
        CloseFigure
</pre><img vspace="5" hspace="5" src="Reports_1_04.png" alt=""> <img vspace="5" hspace="5" src="Reports_1_09.png" alt=""> <h2 id="7">&#1050;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1103; &#1103;&#1088;&#1082;&#1086;&#1089;&#1090;&#1080; + &#1084;&#1077;&#1076;&#1080;&#1072;&#1085;&#1085;&#1072;&#1103; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;</h2><pre class="codeinput">        <span class="keyword">try</span>
            chss2(rgb2pw(RGB_med, <span class="string">"Cr"</span>), Path, Name);
        <span class="keyword">catch</span>
            disp(<span class="string">"ERROR: &#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1087;&#1088;&#1080; &#1092;&#1086;&#1088;&#1084;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1086;&#1090;&#1095;&#1105;&#1090;&#1072; &#1080;&#1079; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; &#1089; &#1082;&#1086;&#1084;&#1087;&#1077;&#1085;&#1089;&#1072;&#1094;&#1080;&#1077;&#1081; &#1094;&#1074;&#1077;&#1090;&#1072; &#1080; &#1084;&#1077;&#1076;&#1080;&#1072;&#1085;&#1085;&#1086;&#1081; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1080;"</span>);
        <span class="keyword">end</span>
        CloseFigure
</pre><img vspace="5" hspace="5" src="Reports_1_05.png" alt=""> <img vspace="5" hspace="5" src="Reports_1_10.png" alt=""> <pre class="codeinput"><span class="keyword">end</span>
close <span class="string">all</span>;
</pre><p class="footer"><br><a href="https://www.mathworks.com/products/matlab/">Published with MATLAB&reg; R2018a</a><br></p></div><!--
##### SOURCE BEGIN #####
clear; close all; clc;

dt=1/30;     % интервал временной дискретизации
fmin=0.15; % нижняя граница - частотный диапазон дыхательной волны
dt=1/30;     % интервал временной дискретизации
Nmed=1/(dt*fmin); % апертура фильтра

% Names
names = [ "P1H1" "P1LC1" "P1LC2" "P1LC3" "P1LC4" "P1LC5" "P1LC6" "P1LC7" "P1M1" "P1M2" "P1M3" "P2LC1" "P2LC2" "P2LC3" "P2LC4" "P2LC5" "P3LC1" "P3LC2" "P3LC3" "P3LC4" "P3LC5" ];
names = [ "P1H1" "P1LC1" ];
%  names = ["P1LC1"];
zrp="endh/"; % Zero Folder

%%% Отчёт по видеоряду:
for iName = 1:length(names)
    Name = names(iName);
    Path=zrp+Name+'/';
    
    try
        RGB=load(Path+Name+"_RGB.txt");
        RGB_nc=load(Path+Name+"_nc_RGB.txt");
        nc=0:dt:length(RGB)*dt-dt;
    catch
        disp("ERROR: Ошибка при формировании отчёта по "+Name);
        continue
    end

        %% Вывод RGB
        disp(Name);
        
        figure('Position', [0 0 400 100]); title(Name,'FontSize',36);
    
        figure('Name','RGB','Position', [0 0 1800 900]); set(gcf,'name',"Сравнение медианной фильтрации для "+Name); clf;
        subplot(2,2,1); plot(nc, RGB(:,1),"red", nc, RGB(:,2),"green", nc, RGB(:,3),"blue");
        title("Временной ряд RGB до компенсации цвета"); grid on;
        xlabel("Секунды"); ylabel("Интенсивность цветовых каналов"); % ylim([40;105]);

        subplot(2,2,2); plot(nc, RGB_nc(:,1),"red", nc, RGB_nc(:,2),"green", nc, RGB_nc(:,3),"blue");
        title("Временной ряд RGB после компенсации цвета"); grid on;
        xlabel("Секунды"); ylabel("Интенсивность цветовых каналов"); % ylim([40;105]);

        subplot(2,2,[3,4]);
        RGB_med=RGB_nc;
        RGB_med(:,1)=RGB_med(:,1)-medfilt1(RGB_med(:,1),Nmed);
        RGB_med(:,2)=RGB_med(:,2)-medfilt1(RGB_med(:,2),Nmed);
        RGB_med(:,3)=RGB_med(:,3)-medfilt1(RGB_med(:,3),Nmed);
        plot(nc, RGB_med(:,1),"red", nc, RGB_med(:,2),"green", nc, RGB_med(:,3),"blue");
        title("Временной ряд RGB после компенсации цвета и медианного фильтра с окном N_m_e_d="+Nmed);
        xlabel("Секунды"); ylabel("Интенсивность цветовых каналов"); grid on; ylim([-4;4]);
        
        %% Исходные данные
        try
            chss2(rgb2pw(RGB, "Cr"), Path, Name);
        catch
            disp("ERROR: Ошибка при формировании отчёта из исходных данных");
        end
        CloseFigure
        
        %% Компенсация яркости
        try
            chss2(rgb2pw(RGB_nc, "Cr"), Path, Name);
        catch
            disp("ERROR: Ошибка при формировании отчёта из данных с компенсацией цвета");
        end
        CloseFigure
        
        %% Компенсация яркости + медианная фильтрация
        try
            chss2(rgb2pw(RGB_med, "Cr"), Path, Name);
        catch
            disp("ERROR: Ошибка при формировании отчёта из данных с компенсацией цвета и медианной фильтрации");
        end
        CloseFigure
end
close all;

##### SOURCE END #####
--></body></html>